文章詳細頁還有一個重要的區塊要製作,就是留言區域拉!
功能是使用者填寫資料後,按下留言按鈕,資料傳回後台且前台立即顯示留言內容。那麼要先做的就是規劃一下傳回後台需要哪些資料:
再來就是和之前一樣的firestore
功能,把資料傳上去,但這次不一樣的地方是要把資料傳到post/postId
裡面。先取到docRef
(依據id
找到相對應的post
),再到docRef
下建立comments
檔案,並給予他參數,也就是上面提到的資料。成功送出資料後再把textarea
清空,這樣就大功告成拉。
function Post(){
const [comment, setComment] = useState()
const docRef = doc(db, "post", postId)
function onSubmit(){
const commentRef = collection(docRef,"comments")
addDoc(commentRef, {
content: comment,
createdAt: serverTimestamp(),
author:{
name: auth.currentUser.email,
uid: auth.currentUser.uid,
photo : auth.currentUser.photoURL || ''
},
}).then(()=>{
setComment("")
});
}
return(
<div className="container">
<div className="section-title">我要留言</div>
<div className="comment">
<div className="user"></div>
<textarea name="" id="" cols="30" rows="10" value={comment} onChange={(e)=>{
setComment(e.target.value)
}}></textarea>
<div className="btnwrap">
<a className="btn blue" href="#" onClick={onSubmit}>留言</a>
</div>
</div>
</div>
}
最後的資料夾會變成這樣,新的集合之下會有一個comments
資料夾,資料夾下有文件,文件內有剛剛傳入的資料。